package com.xinqi.modules.sys.textbook.service;

import com.xinqi.common.base.response.PageInfo;
import com.xinqi.common.base.response.Param;
import com.xinqi.modules.sys.textbook.dto.req.CloudTextbookContentCreateDTO;
import com.xinqi.modules.sys.textbook.dto.req.CloudTextbookContentDeleteDTO;
import com.xinqi.modules.sys.textbook.dto.req.CloudTextbookContentQueryDTO;
import com.xinqi.modules.sys.textbook.dto.req.CloudTextbookContentReplaceDTO;
import com.xinqi.modules.sys.textbook.dto.req.CloudTextbookContentUpdateDTO;
import com.xinqi.modules.sys.textbook.dto.rsp.CloudTextbookContentResultDTO;

import javax.validation.Valid;
import java.util.List;

/**
 * 云课本课堂内容服务层
 *
 * @author: linkai
 * @date: 2023/04/25
 */
public interface CloudTextbookContentService {
    /**
     * 分页查询 云课本课堂内容数据
     */
    PageInfo<CloudTextbookContentResultDTO> page(Param pageable, CloudTextbookContentQueryDTO query);

    /**
     * 查询 云课本课堂内容数据
     */
    List<CloudTextbookContentResultDTO> find(CloudTextbookContentQueryDTO query);

    /**
     * 根据id查询 云课本课堂内容数据
     */
    CloudTextbookContentResultDTO findById(Long id);

    /**
     * 新增 云课本课堂内容数据
     */
    Long insert(@Valid CloudTextbookContentCreateDTO dto);

    /**
     * 根据id修改 云课本课堂内容数据
     */
    Boolean updateById(@Valid CloudTextbookContentUpdateDTO dto);

    /**
     * 根据id删除 云课本课堂内容数据
     */
    Boolean deleteById(Long id);

    /**
     * 根据id删除 云课本课堂内容数据
     */
    Boolean deleteById(CloudTextbookContentDeleteDTO dto);

    /**
     * 批量新增 云课本课堂内容数据
     */
    Boolean insertBatch(List<CloudTextbookContentCreateDTO> list);

    Boolean replace(Long textbookId, List<CloudTextbookContentReplaceDTO> list);

    Boolean replace(Long textbookId, @Valid CloudTextbookContentReplaceDTO dto);

    List<CloudTextbookContentResultDTO> findByCloudTextbookId(Long textBookId);
}
